Repository navigation
fix: with_token sends the original token through memoized API objects - #429
Open
bruno-costanzo wants to merge 1 commit into
Open
bruno-costanzo wants to merge 1 commit into
bruno-costanzo wants to merge 1 commit into
Conversation
Client#with_token copies the client with dup. The copy kept the memoized API objects (@logical, @auth, ...), which still point at the original client, so a request through them went out with the original token.
|
Thank you for your submission! We require that all contributors sign our Contributor License Agreement ("CLA") before we can accept the contribution. Read and sign the agreement Learn more about why HashiCorp requires a CLA and what the CLA includes Have you signed the CLA already but the status is still pending? Recheck it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Client#with_tokencopies the client withdupand sets the new token on the copy. The copy also keeps the memoized API objects (@logical,@auth,@sys, ...), and those still point at the original client. So when the original client has already used#logical, a request through the copy goes out with the original token:The call does not fail, so this is easy to miss, and the original token is often the more privileged one.
This adds
Client#initialize_copy, which clears the memoized API objects so the copy builds its own. The connection pool stays shared, as before: the token is a per-request header.The new spec in
spec/unit/client_spec.rbfails onmaster(both requests carryabcd-1234) and passes with the change.bundle exec rspec spec/unit: 200 examples, 0 failures.